Unity3D版本的游密语音引擎SDK提供的全部为C#接口, 接口调用都会立即返回。
所有接口都可以在主线程中直接使用,凡是本身需要较长耗时的接口调用都会采用异步回调的方式,回调在子线程。
接口对象实例需要通过调用YouMeVoiceAPI.GetInstance ()来获取,接口使用的基本流程为初始化->收到初始化成功回调通知->加入语音频道->收到加入频道成功回调通知->使用其它接口->离开语音频道->反初始化,要确保严格按照上述的顺序使用接口。
void SetCallback(string strObjName);
功能
设置接收回调消息的对象名。这个函数必须在调用Init等其他任何接口之前调用,以确保能收到所有后续的回调消息。
参数说明strObjName:string类型,注册的GameObject的名字。
上面注册好回调的GameObject类还需实现以下方法(其中OnEvent为必须实现的回调,其他回调可以按需实现):
void OnEvent (string strParam);
//以下代码仅供参考
void OnEvent (string strParam)
{
string[] strSections = strParam.Split (new char[] { ',' },4);
if (strSections == null){
return;
}
YouMeEvent eventType = (YouMeEvent)int.Parse (strSections [0]);
YouMeErrorCode errorCode = (YouMeErrorCode)int.Parse (strSections [1]);
string channelID = strSections [2];
string param = strSections [3];
switch (eventType) {
//对eventType的case列举请查询枚举类型YouMeEvent的定义,以下只是部分列举
//使用者请按需自行添加或删除
case YouMeEvent.YOUME_EVENT_INIT_OK:
//"初始化成功";
break;
case YouMeEvent.YOUME_EVENT_INIT_FAILED:
//"初始化失败,错误码:" + errorCode;
break;
case YouMeEvent.YOUME_EVENT_JOIN_OK:
//加入频道成功
break;
case YouMeEvent.YOUME_EVENT_LEAVED_ALL:
//"离开所有频道成功";
break;
default:
//其它回调类型值请参考YouMeEvent类型定义
// "事件类型" + eventType + ",错误码" + errorCode;
break;
}
}
其它回调类型值请参考YouMeEvent类型定义。
<!-- #### RestApi回调
//在调用RestApi后,会收到回调,详情见RequestRestApi接口说明文档
void OnRequestRestApi (string strParam);
strParam:json串。
其中包含:
requestid:整数类型,回传ID。
error:错误码。
query:回传查询命令,json串(包含command和query字段)。
result:查询结果,详情见RequestRestApi接口说明文档。
{
"error":0,
"query":
"{
\"command\":\"query_talk_channel_user_count\",
\"query\":\"{\\\"ChannelID\\\":\\\"123456\\\",\\\"AreaID\\\":0}\"
}",
"requestid":0,
"result":
"{
\"ActionStatus\":\"OK\",
\"ChannelID\":\"123456\",
\"ErrorCode\":0,
\"ErrorInfo\":\"\",
\"UserCount\":0
}",
"type":1
}
``` -->
#### 网络质量检测回调
```csharp
void onDetectNetWorkComplete (string strParam);
strParam:json串。
其中包含:
bNetworkOK:网络是否可用。
result:检测的结果值,以json格式返回,目前会返回avgRtt(平均往返延迟,整型,单位毫秒)和lossPer(丢包率,浮点型,范围0.0~1.0)。
{
"bNetworkOK":true,
"result":
"{
\"avgRtt\":39,
\"lossPer\":0
}",
"type":4
}
void OnMemberChange (string strParam);
strParam:json串。
其中包含:
channelid:字符串,频道ID。
memchange:数字类型,成员列表,或者变更列表。(userid 字符串,用户ID ;isJoin, bool类型,false为离开)。
{"channelid":"2418video","memchange":[{"isJoin":true,"userid":"1001590"}],"type":2}
YouMeErrorCode Init(
string strAppKey,
string strAPPSecret,
YOUME_RTC_SERVER_REGION serverRegionId,
string strExtServerRegionName
bool withInternalPermissionRequest);
功能
初始化语音引擎,做APP验证和资源初始化。
参数说明strAPPKey:从游密后台申请到的 app key, 这个是你们应用程序的唯一标识。strAPPSecret:对应 strAPPKey 的私钥, 这个需要妥善保存,不要暴露给其他人。serverRegionId:设置首选连接服务器的区域码,建议直接使用RTC_DEFAULT_SERVER。如果YOUME_RTC_SERVER_REGION定义的区域码不能满足要求,可以把这个参数设为 RTC_EXT_SERVER,然后通过后面的参数strExtServerRegionName 设置一个自定的区域值(如中国用 "cn" 或者 “ch"表示),然后把这个自定义的区域值同步给游密,我们将通过后台配置映射到最佳区域的服务器。strExtServerRegionName:自定义的扩展的服务器区域名。不能为null,可为空字符串“”。只有前一个参数serverRegionId设为RTC_EXT_SERVER时,此参数才有效(否则都将当空字符串“”处理)。withInternalPermissionRequest:默认为true,true-使用当前游戏运行的Android Activity作为Context,false-使用全局的Application Context作为Context。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//涉及到的主要回调事件有:
// YOUME_EVENT_INIT_OK - 表明初始化成功
// YOUME_EVENT_INIT_FAILED - 表明初始化失败,最常见的失败原因是网络错误或者 AppKey-AppSecret 错误
void OnEvent (string strParam);
YouMeErrorCode JoinChannel (string strUserID, string strChannelID, YouMeUserRole userRole, bool bSingleMode, bool bCheckRoomExist);
功能
加入语音频道(可选单频道/多频道模式,单频道模式中每个时刻只能在一个语音频道里面;多频道模式可以同时听多个语音频道的内容,但每个时刻只能对着一个频道讲话)。
参数说明strUserID:全局唯一的用户标识,全局指在当前应用程序的范围内。strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内,频道号只能包含字母、数字和下划线等符号。userRole :用户在语音频道里面的角色,见YouMeUserRole定义。bSingleMode :是否是单频道模式,默认为false。true—单频道模式,用户只能加入一个频道,会自动退出其他频道;false—多频道模式,用户可以同时在多个频道内,可调用SpeakToChannel切换通话的频道。bCheckRoomExist:是否检查频道存在时才加入,默认为false。true—当频道存在时加入、不存在时返回错误(多用于观众角色),false—无论频道是否存在都加入频道。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//涉及到的主要回调事件有:
//YOUME_EVENT_JOIN_OK - 成功进入语音频道
//YOUME_EVENT_JOIN_FAILED - 进入语音频道失败,可能原因是网络或服务器有问题,或是bCheckRoomExist为true时频道还未创建
void OnEvent (string strParam);
bool IsInAnyChannel ();
功能
查询当前是否在语音频道中。
返回值
返回true表示当前在语音频道中,否则当前不在语音频道内。
语法
YouMeErrorCode joinRangeAudioChannel(string strUserID, string strChannelID, YouMeUserRole userRole, bool bCheckRoomExist, float length, float width, float height, float radius);
功能
加入范围语音频道
参数说明strUserID:全局唯一的用户标识,全局指在当前应用程序的范围内。strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内,频道号只能包含字母、数字和下划线等符号。userRole:用户在语音频道里面的角色,见YouMeUserRole定义。bCheckRoomExist:是否检查频道存在时才加入,默认为false。true-当频道存在时加入、不存在时返回错误(多用于观众角色),false-无论频道是否存在都加入频道。length: 语音地图长(x轴),默认是5000[坐标范围-2500~2500],如果范围语音频道存在,本设置被忽略。width: 语音地图宽(y轴),默认是5000[坐标范围-2500~2500],如果范围语音频道存在,本设置被忽略。height: 语音地图高(z轴),默认是5000[坐标范围-2500~2500],如果范围语音频道存在,本设置被忽略。radius: 范围语音半径,默认是50。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//涉及到的主要回调事件有:
//YOUME_EVENT_JOIN_OK - 成功进入语音频道
//YOUME_EVENT_JOIN_FAILED - 进入语音频道失败,可能原因是网络或服务器有问题,或是bCheckRoomExist为true时频道还未创建
void OnEvent (string strParam);
语法
YouMeErrorCode updateRangeAudioPosition(string strChannelID, float x, float y, float z, float radius);
功能
更新范围语音频道中的位置。
半径以及距离的定义:用户距离计算使用切比雪夫距离,即所有坐标轴方向上差值绝对值的最大值。d=max(|x1-x2|,|y1-y2|,|z1-z2|)
示例:设置radius为50,用户坐标分别为A(0,0,0)、B(30,40,50)、C(30,40,100),则AB可以通话,AC不能通话。
参数说明strChannelID: 频道ID,要保证全局唯一。x: 用户在x轴方向的位置。y: 用户在y轴方向的位置。z: 用户在z轴方向的位置。radius: 用户收听的范围语音最大距离,默认使用频道的范围语音半径。
返回值
返回YOUME_SUCCESS表示成功。其它返回值请参考YouMeErrorCode类型定义。
YouMeErrorCode SpeakToChannel (string strChannelID);
功能
多频道模式下,指定当前要讲话的频道。
参数说明strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//涉及到的主要回调事件有:
//YOUME_EVENT_SPEAK_SUCCESS - 成功切入到指定语音频道
//YOUME_EVENT_SPEAK_FAILED - 切入指定语音频道失败,可能原因是网络或服务器有问题
void OnEvent (string strParam);
语法
YouMeErrorCode BlockChannels(string strChannelList);
功能
多频道模式下,不听指定的频道(设置收听频道黑名单)。
参数说明strChannelList:频道列表,以|分隔,如:Channel1|Channel2|Channel3,空list表示收听全部频道。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
// 涉及到的主要回调事件有:
// YOUME_EVENT_BLOCK_CHANNELS - 屏蔽指定频道声音回调事件
// errcode 错误码,YOUME_SUCCESS 代表成功
void OnEvent (string strParam);
YouMeErrorCode LeaveChannel (string strChannelID);
功能
退出指定的语音频道。
参数说明strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//涉及到的主要回调事件有:
//YOUME_EVENT_LEAVED_ONE - 成功退出指定语音频道
void OnEvent (string strParam);
YouMeErrorCode LeaveChannelAll ();
功能
退出所有的语音频道。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//涉及到的主要回调事件有:
//YOUME_EVENT_LEAVED_ALL - 成功退出所有语音频道
void OnEvent (string strParam);
YouMeErrorCode SetWhiteUserList (string strChannelID, string strWhiteUserList);
功能
设置当前用户的语音消息接收白名单,其语音消息只会转发到白名单的用户,不设置该接口则默认转发至频道内所有人。
参数说明strChannelID:要设置的频道。strWhiteUserList:白名单用户列表, 以|分隔,如:User1|User2|User3,表示语音消息只发送到User1,User2,User3;"all"-表示转发至频道内所有人;""(空字符串)或者设置为自己表示不转发至任何用户。
参数说明strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//涉及到的主要回调事件有:
//YOUME_EVENT_SET_WHITE_USER_LIST_OK - 成功在指定语音频道设置白名单,有异常用户会返回错误码YOUME_ERROR_WHITE_SOMEUSER_ABNORMAL
//YOUME_EVENT_SET_WHITE_USER_LIST_FAILED - 在指定语音频道设置白名单失败,可能原因是网络或服务器有问题
void OnEvent (string strParam);
YouMeErrorCode SetOutputToSpeaker (bool bOutputToSpeaker);
功能
在加入频道成功后设置,切换语音输出到扬声器或听筒。默认为扬声器输出。(iOS受系统限制,如果已释放麦克风则无法切换到听筒;Android需要在app的AndroidManifest文件中添加android.permission.MODIFY_AUDIO_SETTINGS权限)
参数说明bOutputToSpeaker:true—输出到扬声器,false—输出到听筒。
返回值
如果成功返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义。
//涉及到的主要回调事件有:
//YOUME_EVENT_SWITCH_OUTPUT - 切换扬声器/听筒
void OnEvent (string strParam);
void SetSpeakerMute (bool mute);
参数说明mute:true—关闭扬声器,false—开启扬声器。
异步回调
//涉及到的主要回调事件有:
//YOUME_EVENT_LOCAL_SPEAKER_ON - 自己的扬声器打开
//YOUME_EVENT_LOCAL_SPEAKER_OFF - 自己的扬声器关闭
void OnEvent (string strParam);
bool GetSpeakerMute();
功能
获取当前扬声器状态。
返回值
true—扬声器关闭,false—扬声器开启。
void SetMicrophoneMute (bool mute);
参数说明mute:true—关闭麦克风,false—开启麦克风。
异步回调
//涉及到的主要回调事件有:
//YOUME_EVENT_LOCAL_MIC_ON - 本地开启麦克风
//YOUME_EVENT_LOCAL_MIC_OFF - 本地关闭麦克风
void OnEvent (string strParam);
bool GetMicrophoneMute ();
功能
获取当前麦克风状态。
返回值
true—麦克风关闭,false—麦克风开启。
void SetAutoSendStatus(bool bAutoSend);
功能
设置是否通知别人,自己麦克风和扬声器的开关状态。(建议进入频道后调用,设置后其他当前在同一个频道的用户可以获取该用户的麦克风和扬声器的开关状态。
参数说明bAutoSend:默认为false。true—设置后其他当前在同一个频道的用户可以获取该用户的麦克风和扬声器的开关状态,false—不通知别人。
//涉及到的回调事件有:
//YOUME_EVENT_OTHERS_MIC_ON - 远端用户打开麦克风
//YOUME_EVENT_OTHERS_MIC_OFF - 远端用户关闭麦克风
//YOUME_EVENT_OTHERS_SPEAKER_ON - 远端用户打开扬声器
//YOUME_EVENT_OTHERS_SPEAKER_OFF - 远端用户关闭扬声器
void OnEvent (string strParam);
void SetMicVolume (uint uiVolume);
功能
设置本地麦克风音量增益,100为正常值,0 为无声, 150以内相对安全,超过150可能有明显的破音。
参数说明uiVolume:当前音量大小,范围[0-1000]。
int GetMicVolume ();
功能
获取当前设置的麦克风采集音量增益值。
返回值
当前音量大小,范围[0-1000]。
void SetVolume (uint uiVolume);
功能
设置当前程序输出音量大小。建议该状态值在加入频道成功后按需再重置一次。
参数说明uiVolume:当前音量大小,范围[0-100]。
int GetVolume ();
功能
获取当前程序输出音量大小,此音量值为程序内部的音量,与系统音量相乘得到程序使用的实际音量。
返回值
当前音量大小,范围[0-100]。
void SetUserVolume (string strUserID, uint uiVolume);
功能
设置远端单个用户音量增益(0-300),100为正常值,0 为无声, 150以内相对安全,超过150可能有明显的破音。
(仅在本端设备生效,自己退出频道时设置失效,被调节的用户进出频道可以保持有效)
参数说明strUserID: 被调节的用户id。uiVolume: 当前音量大小,范围[0-300]。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
<!-- ### 检测设备静音键是否开启 * **语法** ```csharp YouMeErrorCode CheckIsDeviceMute(); ``` * **功能** 检测设备静音键是否开启。只有在静音键有效的情况下,这个检查才是有效的。 * **返回值** 当前音量大小,范围[0-100]。 * **异步回调** 会收到`YOUME_EVENT_CHECK_DEVICE_MUTE_RESULT`的事件回调,errcode 为1表示静音键开启,为0表示静音键未开启。 -->
void SetUseMobileNetworkEnabled (bool bEnabled);
bEnabled:true——允许使用移动网络,false——禁止使用移动网络。 bool GetUseMobileNetworkEnabled ();
功能
获取是否允许SDK在没有WIFI的情况使用移动网络进行语音通信。
返回值
true——允许使用移动网络,false——禁止使用移动网络,默认情况下允许使用移动网络。
<!-- todo 主线未实现 -->
<!-- ## 网络质量检测 ### 开始网络质量检测 * **语法** ```csharp YouMeErrorCode DetectNetworkQuality(int nDetectTime, int nOverTime, int nInterval, int nPackSize); ``` * **功能** 开始网络质量检测。 * **参数说明** `nDetectTime`:发包检测时长,单位为秒,建议3秒,范围(0,100]。 `nOverTime`:检测终止时长,单位为秒,建议4秒,范围(0,110]。 `nInterval`:发包间隔,单位毫秒,建议20毫秒,范围(0,30000],发包间隔不能超过检测时长或终止时长。 `nPackSize`:发包大小,单位字节,建议300字节,范围[64,1400]。 * **返回值** 如果成功则返回YOUME_SUCCESS,其它具体参见[YouMeErrorCode类型定义](TalkUnityStatusCode.php#YouMeErrorCode类型定义)。 * **异步回调** ```csharp void onDetectNetWorkComplete(string strResult) ``` ### 终止网络质量检测 * **语法** ```csharp YouMeErrorCode StopDetectNetworkQuality(); ``` * **功能** 终止检测网络质量。终止后将不会收到onDetectNetWorkComplete回调。 * **返回值** 如果成功则返回YOUME_SUCCESS,其它具体参见[YouMeErrorCode类型定义](TalkUnityStatusCode.php#YouMeErrorCode类型定义)。 -->
YouMeErrorCode SetOtherMicMute (string userID,bool mute);
功能
控制频道内其他人的麦克风状态(也就是关闭或者开启他人的麦克风)。
参数说明userID:要控制的用户IDmute:是否静音。true—静音别人的麦克风,false—开启别人的麦克风
返回值
如果成功返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义。
//被控制的用户会收到以下回调事件:
//YOUME_EVENT_MIC_CTR_ON - 麦克风被其他用户打开
//YOUME_EVENT_MIC_CTR_OFF - 麦克风被其他用户关闭
void OnEvent (string strParam);
YouMeErrorCode SetOtherSpeakerMute (string userID,bool mute);
功能
控制频道内他人的扬声器状态(也就是关闭或者开启他人的扬声器)。
参数说明userID:要控制的用户ID。mute:是否静音。true—静音别人的扬声器,false—开启别人的扬声器。
返回值
如果成功返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义。
//被控制的用户会收到以下回调事件:
//YOUME_EVENT_SPEAKER_CTR_ON - 扬声器被其他用户打开
//YOUME_EVENT_SPEAKER_CTR_OFF - 扬声器被其他用户关闭
void OnEvent (string strParam);
YouMeErrorCode SetListenOtherVoice (string userID,bool isOn);
功能
设置是否听某人的语音。
参数说明userID:被控制的用户ID。isOn:true—开启接收指定用户的语音,false—屏蔽指定用户的语音。
返回值
如果成功返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义。
异步回调
//涉及到的回调事件有:
//YOUME_EVENT_LISTEN_OTHER_ON - 取消屏蔽某人语音
//YOUME_EVENT_LISTEN_OTHER_OFF - 屏蔽某人语音
void OnEvent (string strParam);
语法
YouMeErrorCode SetReleaseMicWhenMute(bool enabled);
功能
设置当麦克风静音时,是否释放麦克风设备(需要在初始化成功后,加入频道之前调用)。默认为false。
参数说明enabled: true—当麦克风静音时,释放麦克风设备,此时允许第三方模块使用麦克风设备录音。在Android和iOS上,语音由通话音轨切换到媒体音轨,回归到双声道高音质输出体验(如果媒体音量和通话音量不同时切换会产生音量变大变小的感觉);false—不管麦克风是否静音,麦克风设备都会被占用。
返回值
如果成功返回YOUME_SUCCESS,否则返回错误码。其它返回值请参考YouMeErrorCode类型定义。
语法
YouMeErrorCode SetExitCommModeWhenHeadsetPlugin(bool enabled);
功能
设置插入耳机时,是否自动退出系统通话模式(禁用手机系统硬件信号前处理)。
系统提供的前处理效果包括回声消除、自动增益等,有助于抑制战歌等回声噪音,减少系统资源消耗,对Windows系统无效。
默认为false,在初始化之后、加入频道之前调用。
参数说明enabled: true-当插入耳机时,自动禁用系统硬件信号前处理,拔出时还原;false-插拔耳机不做处理。
返回值
如果成功返回YOUME_SUCCESS,其它返回值请参考YouMeErrorCode类型定义。
语法
bool ReleaseMicSync();
功能
调用后完成麦克风释放,只是为了方便使用 IM 的录音接口时切换麦克风使用权。
语法
bool ResumeMicSync ();
功能
调用后恢复麦克风到释放前的状态,只是为了方便使用 IM 的录音接口时切换麦克风使用权。
YouMeErrorCode PauseChannel();
功能
暂停通话,释放对麦克风等设备资源的占用。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//主要回调事件:
//YOUME_EVENT_PAUSED - 暂停语音频道完成
void OnEvent (string strParam);
YouMeErrorCode ResumeChannel();
功能
恢复通话,调用PauseChannel暂停通话后,可调用这个接口恢复通话。(恢复通话后的麦克风的状态是和重新恢复通话时的角色相关,不一定与PauseChannel暂停通话时的麦克风状态一致)
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//主要回调事件:
//YOUME_EVENT_RESUMED - 恢复语音频道完成
void OnEvent (string strParam);
YouMeErrorCode SetVadCallbackEnabled(bool enabled);
功能
设置是否开启语音检测回调,开启后频道内有人开始讲话与结束讲话都会发起相应回调通知。(需要游密后台配置开启,该状态值在加入频道成功后设置才有效,并且需要频道内所有用户都设置才生效。)
参数说明bEnabled:true—打开,false—关闭。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
异步回调
//YOUME_EVENT_OTHERS_VOICE_ON - 用户进入讲话状态
//YOUME_EVENT_OTHERS_VOICE_OFF - 用户进入静默状态
void OnEvent (string strParam);
YouMeErrorCode SetMicLevelCallback(int maxMicLevel)
功能
设置是否开启自己讲话音量级别回调, 并设置相应的参数。
参数说明maxLevel:音量最大时对应的级别,需大于1,最大可设100。根据实际需要设置小于100的值可以减少回调的次数(注意设置较高的值可能会产生大量回调,特别在Unity上会影响其它事件到达,一般建议不超过30)。比如你只在UI上呈现10级的音量变化,那就设10就可以了。设 0 表示关闭回调。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
异步回调
//YOUME_EVENT_MY_MIC_LEVEL - 麦克风的语音级别
void OnEvent (string strParam);
YouMeErrorCode SetFarendVoiceLevelCallback(int maxMicLevel,int maxMixedMicLevel)
功能
设置是否开启远端讲话音量级别回调, 并设置相应的参数。
参数说明maxMicLevel: 单个用户音量对应的最大级别,需大于1,最大可设100。根据实际需要设置小于100的值可以减少回调的次数(注意设置较高的值可能会产生大量回调,特别在Unity上会影响其它事件到达,一般建议不超过30)。比如你只在UI上呈现10级的音量变化,那就设10就可以了。设 0 表示关闭回调。maxMixedMicLevel: 所有远端用户音量混音后对应的最大级别,需大于1,最大可设100。根据实际需要设置小于100的值可以减少回调的次数(注意设置较高的值可能会产生大量回调,特别在Unity上会影响其它事件到达,一般建议不超过30)。比如你只在UI上呈现10级的音量变化,那就设10就可以了。设 0 表示关闭回调。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
异步回调
//YOUME_EVENT_FAREND_VOICE_LEVEL - 远端音量回调
void OnEvent (string strParam);
YouMeErrorCode PlayBackgroundMusic (string pFilePath, bool bRepeat);
功能
播放指定的音乐文件。播放的音乐将会和语音混合后发送给接收方。这个功能必须进入频道传入身份为主播/指挥才能使用。建议使用mp3格式的文件,目前wav、flac格式的文件不支持。(windows程序目前只支持win32程序,win64程序暂不支持)
参数说明pFilePath:音乐文件的路径。bRepeat:是否重复播放,true——重复播放,false——只播放一次就停止播放。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
todo:播放战歌目前没看到回调事件
//主要回调事件:
//YOUME_EVENT_BGM_STOPPED - 通知战歌播放结束
//YOUME_EVENT_BGM_FAILED - 通知战歌播放失败
void OnEvent(string strParam);
YouMeErrorCode StopBackgroundMusic();
功能
停止播放当前正在播放的战歌。这是一个同步调用接口,函数返回时,音乐播放也就停止了。
返回值
如果成功返回YOUME_SUCCESS,表明成功停止了音乐播放流程;否则返回错误码,具体请参考YouMeErrorCode类型定义。
YouMeErrorCode PauseBackgroundMusic();
功能
暂停播放当前正在播放的战歌。这是一个同步调用接口,函数返回时,战歌播放也就暂停了。
返回值
如果成功返回YOUME_SUCCESS,表明成功暂停了音乐播放流程;否则返回错误码,具体请参考YouMeErrorCode类型定义。
YouMeErrorCode ResumeBackgroundMusic();
功能
恢复当前暂停播放的战歌。
这是一个同步调用接口,函数返回时,战歌播放也就恢复了。
返回值
如果成功返回YOUME_SUCCESS,表明成功恢复了音乐播放流程;否则返回错误码,具体请参考YouMeErrorCode类型定义。
YouMeErrorCode SetBackgroundMusicVolume(int vol);
功能
设定战歌的音量。这个接口用于调整战歌和语音之间的相对音量,使得战歌和语音混合听起来协调。
这是一个同步调用接口。
参数说明vol:战歌的音量,范围 [0-100]。
返回值
如果成功则返回YOUME_SUCCESS,否则返回错误码,具体请参考YouMeErrorCode类型定义。
YouMeErrorCode SetHeadsetMonitorOn(bool micEnabled, bool bgmEnabled);
功能
设置是否用耳机监听自己的声音或战歌,这是一个同步调用接口。这个功能必须进入频道传入身份为主播/指挥才能使用。
参数说明micEnabled:是否监听麦克风。true—监听;false—不监听。bgmEnabled:是否监听战歌。true—监听,false—不监听。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
YouMeErrorCode SetPcmCallbackEnable (System.Action<YoumePcmCallbackData> callback, int flag);
功能
设置是否开启音频pcm回调,以及开启哪种类型的pcm回调。
参数说明callback:音频数据的回调Action。需要根据YoumePcmCallbackData中的flag参数区分是什么类型的pcm回调。flag:说明需要哪些类型的音频回调,共有三种类型的回调,分别是远端音频、录音音频、及远端和录音数据的混合音频。flag格式形如PcmCallbackFlag_Romote| PcmCallbackFlag_Record|PcmCallbackFlag_Mix;
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
语法
float GetSoundtouchPitchSemiTones ();
功能
获取变声音调(增值服务,需要后台配置开启)。
返回值
当前变声音调的值,范围[-12 ~ +12]。
语法
YouMeErrorCode SetSoundtouchPitchSemiTones (float fPitchSemiTones);
功能
设置变声音调(增值服务,需要后台配置开启),需在进入频道成功后调用,仅对当前频道有效,退出频道时重置为0。目前该接口在windows中只支持win32。
参数说明fPitchSemiTones:变声音调的值,范围[-12 ~ +12]。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
YouMeErrorCode SetReverbEnabled(bool enabled);
功能
设置是否开启混响音效,这个主要对主播/指挥有用。
参数说明bEnabled:true—打开,false—关闭。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
void SetRecordingTimeMs(uint timeMs);
功能
设置当前录音的时间戳。当通过录游戏脚本进行直播时,要保证观众端音画同步,在主播端需要进行时间对齐。
这个接口设置的就是当前游戏画面录制已经进行到哪个时间点了。
参数说明timeMs:当前游戏画面对应的时间点,单位为毫秒。
void SetPlayingTimeMs(uint timeMs);
功能
设置当前声音播放的时间戳。当通过录游戏脚本进行直播时,要保证观众端音画同步,游戏画面的播放需要和声音播放进行时间对齐。
这个接口设置的就是当前游戏画面播放已经进行到哪个时间点了。
参数说明timeMs:当前游戏画面播放对应的时间点,单位为毫秒。
void SetServerRegion(YOUME_RTC_SERVER_REGION regionId, string strExtRegionName, bool bAppend);
功能
设置首选连接服务器的区域码,初始化前调用。
参数说明regionId:如果YOUME_RTC_SERVER_REGION定义的区域码不能满足要求,可以把这个参数设为 RTC_EXT_SERVER,然后通过后面的参数strExtServerRegionName 设置一个自定的区域值(如中国用 "cn" 或者 “ch"表示),然后把这个自定义的区域值同步给游密,我们将通过后台配置映射到最佳区域的服务器。strExtServerRegionName:自定义的扩展的服务器区域名。不能为null,可为空字符串“”。只有前一个参数serverRegionId设为RTC_EXT_SERVER时,此参数才有效(否则都将当空字符串“”处理)。bAppend:true—表示添加,false—表示替换。
void SetServerRegion(string[] regionNames);
功能
设置参与通话各方所在的区域,这个接口适合于分布区域比较广的应用。最简单的做法是只设定前用户所在区域。但如果能确定其他参与通话的应用所在的区域,则能使服务器选择更优。
参数说明regionNames:指定参与通话各方区域的数组,数组里每个元素为一个区域代码。用户可以自行定义代表各区域的字符串(如中国用 "cn" 或者 “ch"表示),然后把定义好的区域表同步给游密,游密会把这些定义配置到后台,在实际运营时选择最优服务器。
<!-- ## RestApi——支持主播相关信息查询 * **语法** ```csharp YouMeErrorCode RequestRestApi( string command, string queryBody, ref int requestID ) ``` * **功能** Rest API, 向服务器请求额外数据。支持主播信息,主播排班等功能查询。需要的话,请联系我们获取命令详情文档。 * **参数说明** `command`:请求的命令字符串,标识命令类型。 `queryBody`:请求需要的参数,json格式。 `requestID`:回传id,回调的时候传回,标识消息。不关心可以填NULL。 * **返回值** 返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考[YouMeErrorCode类型定义](TalkUnityStatusCode.php#YouMeErrorCode类型定义)。 * **代码示例** ```csharp int request = 0; string body = "{\"ChannelID\":\"123456\",\"AreaID\":0}"; YouMe.YouMeVoiceAPI.GetInstance ().RequestRestApi ("query_talk_channel_user_count", body, ref request); ``` * **异步回调** ```csharp void OnRequestRestApi(string strResult ) ``` ## 安全验证码设置 * **语法** ``` void SetToken( string strToken ) ``` * **功能** 设置身份验证的token,需要配合后台接口。 * **参数说明** `strToken`:身份验证用token,设置为空字符串,清空token值,不进行身份验证。 -->
void setTokenV3( String strToken, long timeStamp);
功能
设置身份验证的token,需要配合后台接口,若要使用请联系游密后台配置。
Token计算方式
token计算方式 采用SHA1加密算法,token=sha1(apikey+appkey+roomid+userid+timestamp)。 token由于涉及安全问题,正式使用在服务端进行计算。
参数说明strToken:身份验证用token,设置为NULL或者空字符串,清空token值,不进行身份验证。timeStamp: 用户加入频道的时间戳,单位s,token鉴权中的一部分。
YouMeErrorCode GetChannelUserList( string channelID, int maxCount, bool notifyMemChange );
(OnMemberChange)。参数说明channelID:频道ID。maxCount:想要获取的最大人数。-1表示获取全部列表。notifyMemChange:其他用户进出频道时,是否要收到通知。(设置为true,自己所在频道有人进出都会有对应回调产生,反之false就没有对应回调)
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
void OnMemberChange( string strResult );
YouMeErrorCode SetGrabMicOption (string pChannelID, int mode, int maxAllowCount, int maxTalkTime, uint voteTime);
功能
抢麦相关设置(抢麦活动发起前调用此接口进行设置)。
参数说明pChannelID:抢麦活动的频道id。mode:抢麦模式(1:先到先得模式;2:按权重分配模式)。先到先得模式中,抢麦活动会持续,用户可以继续抢其他用户释放的麦。maxAllowCount:允许能抢到麦的最大人数(要大于0)。maxTalkTime:允许抢到麦后使用麦的最大时间(单位:秒,要大于0)。voteTime:抢麦仲裁时间(单位:秒,要大于0),过了X秒后服务器将进行仲裁谁最终获得麦(仅在按权重分配模式下有效)。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
YouMeErrorCode StartGrabMicAction (string pChannelID, string pContent);
功能
发起抢麦活动。接口需要加入频道后再调用。
参数说明pChannelID:抢麦活动的频道id。pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
//YOUME_EVENT_GRABMIC_START_OK - 发起抢麦活动成功
//YOUME_EVENT_GRABMIC_START_FAILED - 发起抢麦活动失败
void OnEvent( string strParam );
YouMeErrorCode StopGrabMicAction (string pChannelID, string pContent);
功能
停止抢麦活动。先到先得模式下,抢麦成功后,调用停止抢麦不会把当前抢麦人踢下麦。
参数说明pChannelID:抢麦活动的频道id。pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
//YOUME_EVENT_GRABMIC_STOP_OK - 停止抢麦活动成功
//YOUME_EVENT_GRABMIC_STOP_FAILED - 停止抢麦活动失败
void OnEvent( string strParam );
YouMeErrorCode requestGrabMic (string pChannelID, int score, bool isAutoOpenMic, string pContent);
功能
发起抢麦请求。
参数说明pChannelID:抢麦的频道id。score:积分(权重分配模式下有效,游戏根据自己实际情况设置)。isAutoOpenMic:抢麦成功后是否自动开启麦克风权限。pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
异步回调
//YOUME_EVENT_GRABMIC_REQUEST_OK - 抢麦成功(可以说话)
//YOUME_EVENT_GRABMIC_REQUEST_FAILED - 抢麦失败
//YOUME_EVENT_GRABMIC_REQUEST_WAIT - 进入抢麦等待队列(仅权重模式下会回调此事件)
void OnEvent( string strParam );
YouMeErrorCode releaseGrabMic (string pChannelID);
功能
释放抢到的麦。
参数说明pChannelID:抢麦的频道id。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
异步回调
//YOUME_EVENT_GRABMIC_RELEASE_OK - 释放麦成功
//YOUME_EVENT_GRABMIC_RELEASE_FAILED - 释放麦失败
void OnEvent( string strParam );
YouMeErrorCode setInviteMicOption (string pChannelID, int waitTimeout, int maxTalkTime);
功能
连麦相关设置(角色是频道的管理者或者主播时调用此接口进行频道内的连麦设置)。
参数说明pChannelID:连麦的频道id。waitTimeout:等待对方响应超时时间(秒)。maxTalkTime:最大通话时间(秒)。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
异步回调
//YOUME_EVENT_INVITEMIC_SETOPT_OK - 连麦设置成功
//YOUME_EVENT_INVITEMIC_SETOPT_FAILED - 连麦设置失败
void OnEvent( string strParam );
YouMeErrorCode requestInviteMic (string pChannelID, string pUserID, string pContent);
功能
发起与某人的连麦请求(主动呼叫)。支持跨频道发起连麦。
参数说明pChannelID:连麦的频道id。pUserID:被叫方的用户id。pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
//主要事件回调
//YOUME_EVENT_INVITEMIC_REQUEST_OK - 请求连麦成功(连上了,需等待对方回应)
//YOUME_EVENT_INVITEMIC_REQUEST_FAILED - 请求连麦失败
//YOUME_EVENT_INVITEMIC_NOTIFY_CALL - [通知]有人请求与你连麦
void OnEvent( string strParam );
YouMeErrorCode responseInviteMic (string pUserID, bool isAccept, string pContent);
功能
对连麦请求做出回应(被动应答)。
参数说明pUserID:主叫方的用户id。isAccept:是否同意连麦。pContent:游戏传入的上下文内容,通知回调会传回此内容(目前只支持纯文本格式)。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
//YOUME_EVENT_INVITEMIC_RESPONSE_OK - 响应连麦成功(被叫方无论同意/拒绝都会收到此事件,错误码是YOUME_ERROR_INVITEMIC_REJECT表示拒绝)
//YOUME_EVENT_INVITEMIC_RESPONSE_FAILED - 响应连麦失败
//YOUME_EVENT_INVITEMIC_NOTIFY_ANSWER - [通知]对方对你的连麦请求作出了响应(同意/拒绝/超时,同意的话双方就可以通话了)
//YOUME_EVENT_INVITEMIC_CAN_TALK - 双方可以通话了(响应方已经同意)
void OnEvent( string strParam );
YouMeErrorCode stopInviteMic ();
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
异步回调
//YOUME_EVENT_INVITEMIC_STOP_OK - 停止连麦成功
//YOUME_EVENT_INVITEMIC_STOP_FAILED - 停止连麦失败
//YOUME_EVENT_INVITEMIC_CANNOT_TALK - 双方不可以再通话了(有一方结束了连麦或者连麦时间到)
//YOUME_EVENT_INVITEMIC_NOTIFY_CANCEL - [通知]连麦过程中,对方结束了连麦或者连麦时间到
void OnEvent( string strParam );
语法
YouMeErrorCode SetAIAgentCallback(onAIAgentResult,onAIAgentStatus);
功能
设置AI智能体回调。本接口可以在初始化前进行设置调用。
参数说明onAIAgentResult:AI Agent结果回调。onAIAgentStatus:AI Agent状态回调。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
private void onAIAgentResult(string aiChannel, string aiName, YouMeAIAgentResultType type, ulong roundMs, bool isFinal, string result);
aiChannel:AI对话频道。aiName:AI模型名称。type:结果类型,请参考YouMeAIAgentResultType类型定义。roundMs:AI对话轮数。isFinal:是否结束。result:文本内容。
void onAIAgentStatus(string aiChannel, string aiName, YouMeAIAgentStatus status, ulong roundMs, int code, string message);
aiChannel:AI对话频道。aiName:AI模型名称。status:AI Agent状态,请参考YouMeAIAgentStatus类型定义。roundMs:AI对话轮数。code:错误码。message:错误信息。
语法
YouMeErrorCode joinAIChannel(string strUserID, string strChannelID, string strAIName, string strAILanguage, int nAIEngineID, bool bSingleMode);
功能
加入AI语音频道,可以和智能体进行对话。(需要联系游密技术人员开通)
参数说明strUserID:全局唯一的用户标识,全局指在当前应用程序的范围内。strChannelID:全局唯一的频道标识,全局指在当前应用程序的范围内。频道号只能包含字母、数字和下划线等符号。strAIName:AI智能体的名称,用户指定,比如"Alice"。strAILanguage:AI语音对话的语言代码,BCP-47格式,比如"en-US"、"id-ID"、"th-TH"nAIEngineID: AI语音对话的引擎配置ID,0表示默认配置,配置ID需要联系后台获取bSingleMode: 是否是单频道模式,默认为false,含义:true-单频道模式,用户只能加入一个频道,会自动退出其他频道;false-多频道模式,用户可以同时在多个频道内,可调用SpeakToChannel切换通话的频道。strArea: 指定连接集群的区域码
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//涉及到的主要回调事件有:
//YOUME_EVENT_JOIN_OK - 成功进入语音频道
//YOUME_EVENT_JOIN_FAILED - 进入语音频道失败,可能原因是网络或服务器有问题,或是bCheckRoomExist为true时频道还未创建
void OnEvent (string strParam);
语法
YouMeErrorCode InterruptAIAgent(string aiChannel, string aiName);
功能
在AI对话期间手动打断AI智能体,这是一个异步方法。
参数说明aiChannelID:AI语音频道号aiName:AI智能体的名称,用户指定,比如"Alice"。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//涉及到的主要回调事件有:
//YOUME_EVENT_SEND_INTERRUPT_AIAGENT_REQ - 打断请求确认
//YOUME_EVENT_RECV_INTERRUPT_AIAGENT_RSP - 打断请求响应,AI智能体被打断后会触发AIAGENT_STATUS_INTERRUPTED状态通知
void OnEvent (string strParam);
语法
YouMeErrorCode SetAIChatMicVolumeGain(uint uiGain);
功能
设置AI对话麦克风音量增益。
参数说明uiGain:音量增益参数,取值范围[0,200],默认值是5,0为无声。
uint GetAIChatMicVolumeGain();
功能
获取AI对话麦克风音量增益值。
返回值uiGain:音量增益参数。
YouMeErrorCode SendMessage( string channelID, string content, ref int requestID );
参数说明channelID:频道ID(自己需要进入这个频道)。content:要广播的文本内容。requestID:用于标识消息的ID。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//涉及到的主要回调事件有:
// YOUME_EVENT_SEND_MESSAGE_RESULT - sendMessage的结果,param为回传requestID
// YOUME_EVENT_MESSAGE_NOTIFY - 频道内其他用户收到消息通知,param为content内容
void OnEvent (string strParam);
YouMeErrorCode KickOtherFromChannel( string userID, string channelID , int lastTime );
参数说明userID:被踢的用户ID。channelID:从哪个频道踢出(自己需要在频道)。lastTime:踢出后,多长时间内不允许再次进入(单位:秒)。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//涉及到的主要回调事件有:
// YOUME_EVENT_KICK_RESULT - 踢人方收到,发送消息的结果回调,param为被踢者ID
// YOUME_EVENT_KICK_NOTIFY - 被踢方收到,被踢通知,会自动退出所在频道。param: (踢人者ID,被踢原因,被禁时间)
void OnEvent (string strParam);
void SetLogLevel( YOUME_LOG_LEVEL logLevel );
logLevel:日志等级。小于等于该等级的日志会打印。 YouMeErrorCode UnInit ();
功能
反初始化引擎,可在退出游戏时调用,以释放SDK所有资源。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
需要配合游密变声管理模块文档使用。
YouMeErrorCode SetMagicVoiceEnable(bool enabled);
todo 补充变声
功能
设置变声是否可用。
参数说明enabled:设置变声是否可用,开启后会略微增大声音延迟。
返回值
如果成功则返回YOUME_SUCCESS,其它具体参见YouMeErrorCode类型定义。
语法
YouMeErrorCode setReportInfo(int nTimeSec, string language);
功能
设置缓存音频的信息(包括时长、语言)。需在初始化成功后调用。可以在加入频道前调用。
参数说明nTimeSec:保存语音时长,单位s(默认60s,最大60s)。language:语言类型, 参考 ISO 639。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
语法
YouMeErrorCode reportUserAudio(string reportUserID, string roomID, string customData);
功能
发送消息给被举报用户,被举报用户上报音频给server检查。使用此举报接口前,需要调用setReportInfo。
参数说明reportUserID:被举报用户userid。roomID: 被举报用户所在频道, 单频道模式下为空表示本频道,多频道模式下为空时表示第一次加入的频道。customData:自定义字符串(透传)。
返回值
返回YOUME_SUCCESS才会有异步回调通知。其它返回值请参考YouMeErrorCode类型定义。
异步回调
//YOUME_EVENT_SEND_REPORT_REQ_ACK - 举报者发送举报请求响应事件
//YOUME_EVENT_REPORT_AUDIO_SERVER_NOTIFY - 本地音频上报到server返回举报结果。
//YOUME_EVENT_REPORT_AUDIO_MASK_NOTIFY - 被禁言事件通知。
void onEvent(string strParam);